home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-20 / w9gr-dsp.zip / CW1KC.TMS < prev    next >
Text File  |  1992-08-22  |  20KB  |  863 lines

  1.     IDT     'CW1000'
  2.     TITL    'Mother of All CW Filters, 1000 Hz version, 200 Hz BW'
  3.  
  4. * COPYRIGHT (c) 1992 BY DAVID L. HERSHBERGER, W9GR
  5. * ALL RIGHTS RESERVED
  6.  
  7. * NONCOMMERCIAL USE BY RADIO AMATEURS AND ELECTRONIC HOBBYISTS IS PERMITTED.
  8. * THIS IS NOT PUBLIC DOMAIN SOFTWARE.
  9. * THIS SOFTWARE MAY NOT BE USED WITHOUT A LICENSE AS THE BASIS
  10. * FOR MANUFACTURE OF COMMERCIAL PRODUCTS.
  11. * COMMERCIAL USE OF THIS SOFTWARE REQUIRES A LICENSE.
  12. * LICENSING INQUIRIES MAY BE DIRECTED TO:
  13. *      QUANTICS
  14. *      P. O. BOX 2163
  15. *      NEVADA CITY, CALIFORNIA  95959-2163
  16.  
  17. * THIS TMS320C10 ASSEMBLY LANGUAGE PROGRAM IS WRITTEN FOR THE
  18. * W9GR QUANTICS DIGITAL SIGNAL PROCESSOR DESCRIBED ON PAGE 43 OF
  19. * THE SEPTEMBER 1992 ISSUE OF QST MAGAZINE.
  20. * ("LOW COST DIGITAL SIGNAL PROCESSING FOR THE RADIO AMATEUR"
  21. * BY DAVE HERSHBERGER, W9GR)
  22.  
  23. * THE W9GR / QUANTICS DIGITAL SIGNAL PROCESSOR IS AVAILABLE IN KIT FORM
  24. * (INCLUDING ALL PC BOARD MOUNTED COMPONENTS BUT NO ENCLOSURE OR POWER SUPPLY)
  25. * FROM:
  26. *      QUANTICS
  27. *      P. O. BOX 2163
  28. *      NEVADA CITY, CALIFORNIA  95959
  29.  
  30. * WITH DITHER
  31. * FS = 12500 HZ, 4X OVERSAMPLING AT INPUT AND OUTPUT
  32. * 400 PROCESSOR CYCLES BETWEEN I/O
  33. * 1600 PROCESSOR CYCLES PER FIR FILTER
  34. * FIR SAMPLING FREQUENCY = 3125 HZ
  35. * CENTER FREQUENCY = 1000 HZ
  36. * BANDWIDTH = 150 HZ (APPROXIMATELY 200 HZ AT -3 DB)
  37.  
  38. * BIO=1 > CW FILTER
  39. * BIO=0 > BYPASS FILTER, INTERPOLATORS/DECIMATORS STILL IN LINE
  40.  
  41. * **********************************************************************
  42. *
  43. *                FINITE IMPULSE RESPONSE (FIR)
  44. *              LINEAR PHASE DIGITAL FILTER DESIGN
  45. *                  REMEZ EXCHANGE ALGORITHM
  46. *
  47. *                       BANDPASS FILTER
  48. *
  49. *                     FILTER LENGTH =  82
  50. *
  51. *                ***** IMPULSE RESPONSE *****
  52. *
  53. *              H( 1) =   .21198650E-02 = H( 82)
  54. *              H( 2) =  -.17428840E-02 = H( 81)
  55. *              H( 3) =  -.15629080E-02 = H( 80)
  56. *              H( 4) =   .38065940E-02 = H( 79)
  57. *              H( 5) =  -.20551820E-02 = H( 78)
  58. *              H( 6) =  -.34211490E-02 = H( 77)
  59. *              H( 7) =   .51384120E-02 = H( 76)
  60. *              H( 8) =  -.10732120E-02 = H( 75)
  61. *              H( 9) =  -.42480610E-02 = H( 74)
  62. *              H(10) =   .36992200E-02 = H( 73)
  63. *              H(11) =   .16266930E-03 = H( 72)
  64. *              H(12) =  -.13960460E-02 = H( 71)
  65. *              H(13) =  -.64306530E-03 = H( 70)
  66. *              H(14) =  -.10718600E-02 = H( 69)
  67. *              H(15) =   .62107130E-02 = H( 68)
  68. *              H(16) =  -.51473250E-02 = H( 67)
  69. *              H(17) =  -.68662390E-02 = H( 66)
  70. *              H(18) =   .15727890E-01 = H( 65)
  71. *              H(19) =  -.58210150E-02 = H( 64)
  72. *              H(20) =  -.15336700E-01 = H( 63)
  73. *              H(21) =   .20867660E-01 = H( 62)
  74. *              H(22) =  -.14653560E-02 = H( 61)
  75. *              H(23) =  -.19463280E-01 = H( 60)
  76. *              H(24) =   .16152300E-01 = H( 59)
  77. *              H(25) =   .30151440E-02 = H( 58)
  78. *              H(26) =  -.10517580E-01 = H( 57)
  79. *              H(27) =   .23936820E-02 = H( 56)
  80. *              H(28) =  -.21495480E-02 = H( 55)
  81. *              H(29) =   .15169460E-01 = H( 54)
  82. *              H(30) =  -.11365700E-01 = H( 53)
  83. *              H(31) =  -.25143530E-01 = H( 52)
  84. *              H(32) =   .51058680E-01 = H( 51)
  85. *              H(33) =  -.12418410E-01 = H( 50)
  86. *              H(34) =  -.64916870E-01 = H( 49)
  87. *              H(35) =   .81836180E-01 = H( 48)
  88. *              H(36) =   .66796170E-02 = H( 47)
  89. *              H(37) =  -.10861730E+00 = H( 46)
  90. *              H(38) =   .91905800E-01 = H( 45)
  91. *              H(39) =   .41247120E-01 = H( 44)
  92. *              H(40) =  -.13736940E+00 = H( 43)
  93. *              H(41) =   .75541600E-01 = H( 42)
  94. *
  95. *                         BAND  1       BAND  2       BAND  3
  96. *   LOWER BAND EDGE      .0000000      .2960000      .3712000
  97. *   UPPER BAND EDGE      .2688000      .3440000      .5000000
  98. *   DESIRED VALUE        .0000000     1.0000000      .0000000
  99. *   WEIGHTING          10.0000000     1.0000000    10.0000000
  100. *   DEVIATION            .0021601      .0216009      .0021601
  101. *   DEVIATION IN DB   -53.3105500      .1856256   -53.3105500
  102. *
  103. *   EXTREMAL FREQUENCIES--MAXIMA OF THE ERROR CURVE
  104. *       .0000000    .0190549    .0335366    .0464939    .0586890
  105. *       .0716463    .0838414    .0960365    .1082316    .1204267
  106. *       .1326219    .1448170    .1570121    .1692072    .1814023
  107. *       .1928352    .2050303    .2164632    .2278962    .2393291
  108. *       .2492376    .2591461    .2660059    .2688000    .2960000
  109. *       .3013354    .3135305    .3386829    .3440000    .3712000
  110. *       .3742488    .3811085    .3902549    .4009256    .4115963
  111. *       .4230292    .4344621    .4466572    .4580902    .4702853
  112. *       .4824804    .4939133
  113. *
  114. *  **********************************************************************
  115.  
  116.  
  117. * FIRST INTERPOLATION/DECIMATION HALF BAND FILTER 12500 HZ <> 6250 HZ
  118. **********************************************************************
  119. *
  120. *                FINITE IMPULSE RESPONSE (FIR)
  121. *              LINEAR PHASE DIGITAL FILTER DESIGN
  122. *                  REMEZ EXCHANGE ALGORITHM
  123. *
  124. *                       BANDPASS FILTER
  125. *
  126. *                     FILTER LENGTH =   9
  127. *
  128. *                ***** IMPULSE RESPONSE *****
  129. *
  130. *
  131. *              H( 1) =  -.17244020E-04 = H(  9)
  132. *              H( 2) =  -.35323790E-01 = H(  8)
  133. *              H( 3) =   .58424450E-04 = H(  7)
  134. *              H( 4) =   .28500050E+00 = H(  6)
  135. *              H( 5) =   .49991770E+00 = H(  5)
  136. *
  137. *                         BAND  1       BAND  2
  138. *   LOWER BAND EDGE      .0000000      .4360000
  139. *   UPPER BAND EDGE      .0640000      .5000000
  140. *   DESIRED VALUE       1.0000000      .0000000
  141. *   WEIGHTING           1.0000000     1.0000000
  142. *   DEVIATION            .0006465      .0006465
  143. *   DEVIATION IN DB      .0056136   -63.7885900
  144. *
  145. *   EXTREMAL FREQUENCIES--MAXIMA OF THE ERROR CURVE
  146. *       .0000000    .0437500    .0640000    .4360000    .4547500
  147. *       .5000000
  148. *
  149. * **********************************************************************
  150.  
  151. * SECOND INTERPOLATOR/DECIMATOR HALF BAND FILTER 6250 HZ <> 3125 HZ
  152. **********************************************************************
  153. *
  154. *                FINITE IMPULSE RESPONSE (FIR)
  155. *              LINEAR PHASE DIGITAL FILTER DESIGN
  156. *                  REMEZ EXCHANGE ALGORITHM
  157. *
  158. *                       BANDPASS FILTER
  159. *
  160. *                     FILTER LENGTH =  13
  161. *
  162. *                ***** IMPULSE RESPONSE *****
  163. *
  164. *
  165. *              H( 1) =   .66367920E-05 = H( 13)
  166. *              H( 2) =   .13592210E-01 = H( 12)
  167. *              H( 3) =  -.16377250E-04 = H( 11)
  168. *              H( 4) =  -.64672420E-01 = H( 10)
  169. *              H( 5) =   .25843950E-04 = H(  9)
  170. *              H( 6) =   .30201130E+00 = H(  8)
  171. *              H( 7) =   .49996780E+00 = H(  7)
  172. *
  173. *                         BAND  1       BAND  2
  174. *   LOWER BAND EDGE      .0000000      .3720000
  175. *   UPPER BAND EDGE      .1280000      .5000000
  176. *   DESIRED VALUE       1.0000000      .0000000
  177. *   WEIGHTING           1.0000000     1.0000000
  178. *   DEVIATION            .0018621      .0018621
  179. *   DEVIATION IN DB      .0161592   -54.5997800
  180. *
  181. *   EXTREMAL FREQUENCIES--MAXIMA OF THE ERROR CURVE
  182. *       .0000000    .0625000    .1071428    .1280000    .3720000
  183. *       .3898572    .4389645    .5000000
  184. *
  185. *  **********************************************************************
  186.  
  187.     DSEG
  188.  
  189.     DORG    >00     PAGE 0
  190.  
  191. LSBMAX  BSS     1       8 BIT MASK
  192. MASK    BSS     1       2'S COMPLEMENT CONVERSION MASK
  193. ONES    BSS     1       ALL ONES FOR EX-OR
  194.  
  195. * END OF TABLE PAGE 0 READ VARIABLES
  196.  
  197. SIGIN   BSS     4       INPUT SAMPLES
  198. SIGOUT  BSS     4       OUTPUT SAMPLES
  199. LPFI1   BSS     7       INPUT INTERPOLATOR 1
  200. LPFI2   BSS     11      INPUT INTERPOLATOR 2
  201. BPF     BSS     82      BANDPASS FILTER DELAY
  202. BPFOUT  BSS     1       BANDPASS FILTER OUTPUT
  203. ONE     BSS     1       CONSTANT 1
  204. SQUARE  BSS     1       INPUT SQUARED
  205. LED     BSS     1       LED DISPLAY
  206. TEMP    BSS     1       TEMPORARY STORAGE
  207. LPFO1   BSS     6       OUTPUT INTERPOLATOR 1
  208. LPFO2   BSS     4       OUTPUT INTERPOLATOR 2
  209. DITHER  BSS     1       DITHER PSEUDORANDOM SEQUENCE
  210.  
  211.     DORG    >80     PAGE 1
  212.  
  213. HPF     BSS     5       HPF COEFFICIENTS
  214.  
  215. * END OF PAGE 1 TABLE READ VARIABLES
  216.  
  217. INP     BSS     3       INPUT DELAY, USED FOR HPF
  218. DENOM   BSS     2       INPUT HPF DENOMINATOR DELAY
  219. ONE1    BSS     1       CONSTANT 1
  220.  
  221. TOP     EQU     >8F
  222.  
  223.     DEND
  224.  
  225.     PSEG
  226.  
  227.     B       START
  228. INTRPT  B       START
  229. START   DINT
  230.     SOVM
  231.     LDPK    0
  232.     LARP    AR0
  233.  
  234. * ZERO ALL DATA MEMORY LOCATIONS
  235.  
  236.     ZAC
  237.     LARK    AR0,TOP
  238. CLEAR   SACL    *,0
  239.     BANZ    CLEAR
  240.  
  241. * STORE AWAY "1" VALUE
  242.  
  243.     LACK    1
  244.     SACL    ONE
  245.     SACL    DITHER       ALSO INITIALIZE DITHER WORD
  246.     LDPK    1
  247.     SACL    ONE1
  248.     LDPK    0
  249.  
  250. * GET READY FOR TABLE READ, PAGE 0
  251.  
  252.     LARK    AR0,ONES     ONES: LAST TABLE ENTRY
  253.     LT      ONE
  254.     MPYK    TBLEND
  255.     PAC
  256.     LARP    AR0
  257.  
  258. * MOVE CONSTANTS TO DATA MEMORY, PAGE 0
  259.  
  260. MOVTBL  TBLR    *
  261.     SUB     ONE
  262.     BANZ    MOVTBL
  263.  
  264. * GET READY FOR TABLE READ, PAGE 1
  265.  
  266.     LARK    AR1,HPF+4     HPF+4: LAST TABLE ENTRY
  267.     LARK    AR0,TBLEND1-TABLE1
  268.     LT      ONE
  269.     MPYK    TBLEND1
  270.     PAC
  271.  
  272. * MOVE CONSTANTS TO DATA MEMORY, PAGE 1
  273.  
  274.     LARP    AR1
  275. MOVTBL1 LDPK    1
  276.     LARP    AR1
  277.     TBLR    *-,AR0
  278.     LDPK    0
  279.     SUB     ONE
  280.     BANZ    MOVTBL1
  281.  
  282.     LARP    AR0
  283.     LDPK    0
  284.  
  285. * INPUT INTERPOLATOR 2
  286.  
  287. AGAIN   ZAC
  288.     LT      LPFI2+10
  289.     MPYK    56
  290.     DMOV    LPFI2+9
  291.     LTD     LPFI2+8
  292.     MPYK    -265
  293.     DMOV    LPFI2+7
  294.     LTD     LPFI2+6
  295.     MPYK    1237
  296.     LTD     LPFI2+5
  297.     MPYK    2048
  298.     LTD     LPFI2+4
  299.     MPYK    1237
  300.     DMOV    LPFI2+3
  301.     LTD     LPFI2+2
  302.     MPYK    -265
  303.     DMOV    LPFI2+1
  304.     LTD     LPFI2
  305.     MPYK    56
  306.     APAC
  307.     ADD     ONE,11  ADD 0.5 TO ROUND
  308.     LDPK    1
  309.     SACH    INP,4   SAVE TO HPF W/ SHIFT
  310.     LDPK    0
  311.     
  312. * INPUT INTERPOLATOR 1 PASS 1
  313.  
  314.     ZAC
  315.     LT      LPFI1+6
  316.     MPYK    -145
  317.     DMOV    LPFI1+5
  318.     LTD     LPFI1+4
  319.     MPYK    1167
  320.     LTD     LPFI1+3
  321.     MPYK    2048
  322.     LTD     LPFI1+2
  323.     MPYK    1167
  324.     DMOV    LPFI1+1
  325.     LTD     LPFI1
  326.     MPYK    -145
  327.     APAC
  328.     ADD     ONE,11  ADD 0.5 TO ROUND
  329.     SACH    LPFI2,4 SAVE TO 2ND INTERP W/ SHIFT
  330.  
  331. * PUT FIRST INPUT SAMPLE INTO FIRST INPUT INTERPOLATOR
  332.  
  333.     ZALS    SIGIN   PUT SAMPLE INTO ACC-L
  334.     XOR     MASK    A/D OFFSET BINARY=>2'S COMP
  335.     AND     LSBMAX  CLEAR ALL LOW ORDER BITS (NOISE)
  336.     SACL    LPFI1   PUT INTO FIRST INTERPOLATOR
  337.  
  338. * FIRST INTERPOLATOR DATA MOVE PASS 1
  339.  
  340.     DMOV    LPFI1+5
  341.     DMOV    LPFI1+4
  342.     DMOV    LPFI1+3
  343.     DMOV    LPFI1+2
  344.     DMOV    LPFI1+1
  345.     DMOV    LPFI1
  346.  
  347. * PUT SECOND INPUT SAMPLE INTO FIRST INPUT INTERPOLATOR
  348.  
  349.     ZALS    SIGIN+1 PUT SAMPLE INTO ACC-L
  350.     XOR     MASK    A/D OFFSET BINARY=>2'S COMP
  351.     AND     LSBMAX  CLEAR ALL LOW ORDER BITS (NOISE)
  352.     SACL    LPFI1   PUT INTO FIRST INTERPOLATOR
  353.  
  354. * SECOND INTERPOLATOR DATA MOVE
  355.  
  356.     DMOV    LPFI2+9
  357.     DMOV    LPFI2+8
  358.     DMOV    LPFI2+7
  359.     DMOV    LPFI2+6
  360.     DMOV    LPFI2+5
  361.     DMOV    LPFI2+4
  362.     DMOV    LPFI2+3
  363.     DMOV    LPFI2+2
  364.     DMOV    LPFI2+1
  365.     DMOV    LPFI2
  366.  
  367. * INPUT INTERPOLATOR 1 PASS 2
  368.  
  369.     ZAC
  370.     LT      LPFI1+6
  371.     MPYK    -145
  372.     DMOV    LPFI1+5
  373.     LTD     LPFI1+4
  374.     MPYK    1167
  375.     LTD     LPFI1+3
  376.     MPYK    2048
  377.     LTD     LPFI1+2
  378.     MPYK    1167
  379.     DMOV    LPFI1+1
  380.     LTD     LPFI1
  381.     MPYK    -145
  382.     APAC
  383.     ADD     ONE,11  ADD 0.5 TO ROUND
  384.     SACH    LPFI2,4 SAVE TO 2ND INTERP W/ SHIFT
  385.  
  386. * PUT THIRD INPUT SAMPLE INTO FIRST INPUT INTERPOLATOR
  387.  
  388.     ZALS    SIGIN+2 PUT SAMPLE INTO ACC-L
  389.     XOR     MASK    A/D OFFSET BINARY=>2'S COMP
  390.     AND     LSBMAX  CLEAR ALL LOW ORDER BITS (NOISE)
  391.     SACL    LPFI1   PUT INTO FIRST INTERPOLATOR
  392.  
  393. * FIRST INTERPOLATOR DATA MOVE PASS 2
  394.  
  395.     DMOV    LPFI1+5
  396.     DMOV    LPFI1+4
  397.     DMOV    LPFI1+3
  398.     DMOV    LPFI1+2
  399.     DMOV    LPFI1+1
  400.     DMOV    LPFI1
  401.  
  402. * PUT FOURTH INPUT SAMPLE INTO FIRST INPUT INTERPOLATOR
  403.  
  404.     ZALS    SIGIN+3 PUT SAMPLE INTO ACC-L
  405.     XOR     MASK    A/D OFFSET BINARY=>2'S COMP
  406.     AND     LSBMAX  CLEAR ALL LOW ORDER BITS (NOISE)
  407.     SACL    LPFI1   PUT INTO FIRST INTERPOLATOR
  408.  
  409. * FIRST OUTPUT SIGNAL TO DAC
  410.  
  411.     OUT     SIGOUT,PA1      TO D/A CONV
  412.     IN      SIGIN,PA1       INPUT FIRST SAMPLE
  413.     OUT     ONE,PA0         START CONVERSION
  414.     CALL    WASTE
  415.  
  416. * SECOND OUTPUT SIGNAL TO DAC
  417.  
  418.     OUT     SIGOUT+1,PA1    TO D/A CONV
  419.     IN      SIGIN+1,PA1     INPUT SECOND SAMPLE
  420.     OUT     ONE,PA0         START CONVERSION
  421.     CALL    WASTE
  422.  
  423. * THIRD OUTPUT SIGNAL TO DAC
  424.  
  425.     OUT     SIGOUT+2,PA1    TO D/A CONV
  426.     IN      SIGIN+2,PA1     INPUT THIRD SAMPLE
  427.     OUT     ONE,PA0         START CONVERSION
  428.     CALL    WASTE2
  429.  
  430. * FORM DITHER WORD
  431. * 15 BITS EXTENDED TO 16
  432. * BIT0 = BIT13 XOR BIT14
  433.  
  434.     LAC     DITHER,2        SHIFT BIT14 TO MSB-HI
  435.     SACH    TEMP            STORE TEMPORARILY
  436.     LAC     DITHER,3        SHIFT BIT13 TO MSB-HI
  437.     SACH    LED             STORE TEMPORARILY IN LED
  438.     LAC     TEMP
  439.     XOR     LED             FORM XOR
  440.     AND     ONE             IGNORE ALL BUT LSB
  441.     ADD     DITHER,1        SHIFT UP ONE BIT
  442.     SACL    DITHER          STORE NEW DITHER WORD
  443.  
  444. * CW BANDPASS FILTER
  445.  
  446.     LAC     DITHER,4        LOAD ACCUM WITH SHIFTED DITHER
  447.     LT      BPF+81
  448.     MPYK     9
  449.     LTD     BPF+80
  450.     MPYK    -7
  451.     LTD     BPF+79
  452.     MPYK    -7
  453.     LTD     BPF+78
  454.     MPYK     16
  455.     LTD     BPF+77
  456.     MPYK    -9
  457.  
  458. * FOURTH OUTPUT SIGNAL TO DAC
  459.  
  460.     OUT     SIGOUT+3,PA1    TO D/A CONV
  461.     IN      SIGIN+3,PA1     INPUT FOURTH SAMPLE
  462.     OUT     ONE,PA0         START CONVERSION
  463.  
  464.     LTD     BPF+76
  465.     MPYK    -14
  466.     LTD     BPF+75
  467.     MPYK     21
  468.     LTD     BPF+74
  469.     MPYK    -4
  470.     LTD     BPF+73
  471.     MPYK    -18
  472.     LTD     BPF+72
  473.     MPYK     15
  474.     LTD     BPF+71
  475.     MPYK     1
  476.     LTD     BPF+70
  477.     MPYK    -6
  478.     LTD     BPF+69
  479.     MPYK    -3
  480.     LTD     BPF+68
  481.     MPYK    -4
  482.     LTD     BPF+67
  483.     MPYK     26
  484.     LTD     BPF+66
  485.     MPYK    -21
  486.     LTD     BPF+65
  487.     MPYK    -29
  488.     LTD     BPF+64
  489.     MPYK     66
  490.     LTD     BPF+63
  491.     MPYK    -24
  492.     LTD     BPF+62
  493.     MPYK    -64
  494.     LTD     BPF+61
  495.     MPYK     87
  496.     LTD     BPF+60
  497.     MPYK    -6
  498.     LTD     BPF+59
  499.     MPYK    -81
  500.     LTD     BPF+58
  501.     MPYK     67
  502.     LTD     BPF+57
  503.     MPYK     13
  504.     LTD     BPF+56
  505.     MPYK    -44
  506.     LTD     BPF+55
  507.     MPYK     10
  508.     LTD     BPF+54
  509.     MPYK    -9
  510.     LTD     BPF+53
  511.     MPYK     63
  512.     LTD     BPF+52
  513.     MPYK    -47
  514.     LTD     BPF+51
  515.     MPYK    -105
  516.     LTD     BPF+50
  517.     MPYK     213
  518.     LTD     BPF+49
  519.     MPYK    -52
  520.     LTD     BPF+48
  521.     MPYK    -271
  522.     LTD     BPF+47
  523.     MPYK     341
  524.     LTD     BPF+46
  525.     MPYK     28
  526.     LTD     BPF+45
  527.     MPYK    -453
  528.     LTD     BPF+44
  529.     MPYK     383
  530.     LTD     BPF+43
  531.     MPYK     172
  532.     LTD     BPF+42
  533.     MPYK    -573
  534.     LTD     BPF+41
  535.     MPYK     315
  536.     LTD     BPF+40
  537.     MPYK     315
  538.     LTD     BPF+39
  539.     MPYK    -573
  540.     LTD     BPF+38
  541.     MPYK     172
  542.     LTD     BPF+37
  543.     MPYK     383
  544.     LTD     BPF+36
  545.     MPYK    -453
  546.     LTD     BPF+35
  547.     MPYK     28
  548.     LTD     BPF+34
  549.     MPYK     341
  550.     LTD     BPF+33
  551.     MPYK    -271
  552.     LTD     BPF+32
  553.     MPYK    -52
  554.     LTD     BPF+31
  555.     MPYK     213
  556.     LTD     BPF+30
  557.     MPYK    -105
  558.     LTD     BPF+29
  559.     MPYK    -47
  560.     LTD     BPF+28
  561.     MPYK     63
  562.     LTD     BPF+27
  563.     MPYK    -9
  564.     LTD     BPF+26
  565.     MPYK     10
  566.     LTD     BPF+25
  567.     MPYK    -44
  568.     LTD     BPF+24
  569.     MPYK     13
  570.     LTD     BPF+23
  571.     MPYK     67
  572.     LTD     BPF+22
  573.     MPYK    -81
  574.     LTD     BPF+21
  575.     MPYK    -6
  576.     LTD     BPF+20
  577.     MPYK     87
  578.     LTD     BPF+19
  579.     MPYK    -64
  580.     LTD     BPF+18
  581.     MPYK    -24
  582.     LTD     BPF+17
  583.     MPYK     66
  584.     LTD     BPF+16
  585.     MPYK    -29
  586.     LTD     BPF+15
  587.     MPYK    -21
  588.     LTD     BPF+14
  589.     MPYK     26
  590.     LTD     BPF+13
  591.     MPYK    -4
  592.     LTD     BPF+12
  593.     MPYK    -3
  594.     LTD     BPF+11
  595.     MPYK    -6
  596.     LTD     BPF+10
  597.     MPYK     1
  598.     LTD     BPF+9
  599.     MPYK     15
  600.     LTD     BPF+8
  601.     MPYK    -18
  602.     LTD     BPF+7
  603.     MPYK    -4
  604.     LTD     BPF+6
  605.     MPYK     21
  606.     LTD     BPF+5
  607.     MPYK    -14
  608.     LTD     BPF+4
  609.     MPYK    -9
  610.     LTD     BPF+3
  611.     MPYK     16
  612.     LTD     BPF+2
  613.     MPYK    -7
  614.     LTD     BPF+1
  615.     MPYK    -7
  616.     LTD     BPF+0
  617.     MPYK     9
  618.  
  619.     APAC
  620.     ADD     ONE,11          ADD 0.5 TO ROUND
  621.     SACH    BPFOUT,4        BPF OUTPUT
  622.  
  623. * INPUT HIGHPASS FILTER, FS=3125, PASS 300 REJ 20.5 0.5/50 DB N=2
  624.  
  625. *       NUMERATOR:
  626.  
  627.     LDPK    1
  628.     ZAC
  629.     LT      INP+2
  630.     MPY     HPF
  631.     LTD     INP+1
  632.     MPY     HPF+1
  633.     LTD     INP
  634.     MPY     HPF+2
  635.  
  636. *       DENOMINATOR:
  637.  
  638.     LTA     DENOM+1
  639.     MPY     HPF+4
  640.     LTD     DENOM
  641.     MPY     HPF+3
  642.     APAC
  643.  
  644.     ADD     ONE1,11         ADD 0.5 TO ROUND
  645.     SACH    DENOM,4         SAVE WITH SHIFT
  646.     LDPK    0
  647.     SACH    BPF,4           ALSO SAVE IN BPF INPUT
  648.  
  649. * SQUARE INPUT
  650.  
  651.     SACH    TEMP,4
  652.     LT      TEMP
  653.     MPY     TEMP
  654.     PAC
  655.     SACH    TEMP
  656.     SUBH    SQUARE
  657.     BGZ     PEAK
  658.     ZALS    SQUARE
  659.     SUB     ONE,2
  660.     ABS
  661.     SACL    SQUARE
  662.     B       DISPLAY
  663.  
  664. PEAK    ZALH    TEMP
  665.     SACH    SQUARE
  666.     NOP
  667.     NOP
  668.     NOP
  669.     NOP
  670.  
  671. * CONVERT TO DISPLAY
  672.  
  673. DISPLAY LAC     SQUARE,12
  674.     SACH    LED
  675.  
  676.     LAC     SQUARE,11
  677.     SACH    TEMP
  678.     ZALS    TEMP
  679.     OR      LED
  680.     SACL    LED
  681.  
  682.     LAC     SQUARE,10
  683.     SACH    TEMP
  684.     ZALS    TEMP
  685.     OR      LED
  686.     SACL    LED
  687.  
  688.     LAC     SQUARE,9
  689.     SACH    TEMP
  690.     ZALS    TEMP
  691.     OR      LED
  692.     SACL    LED
  693.  
  694.     LAC     SQUARE,8
  695.     SACH    TEMP
  696.     ZALS    TEMP
  697.     OR      LED
  698.     SACL    LED
  699.  
  700.     LAC     SQUARE,7
  701.     SACH    TEMP
  702.     ZALS    TEMP
  703.     OR      LED
  704.     SACL    LED
  705.  
  706.     LAC     SQUARE,6
  707.     SACH    TEMP
  708.     ZALS    TEMP
  709.     OR      LED
  710.     SACL    LED
  711.  
  712.     LAC     SQUARE,5
  713.     SACH    TEMP
  714.     ZALS    TEMP
  715.     OR      LED
  716.     SACL    LED
  717.  
  718.     LAC     SQUARE,4
  719.     SACH    TEMP
  720.     ZALS    TEMP
  721.     OR      LED
  722.     SACL    LED
  723.  
  724.     LAC     SQUARE,3
  725.     SACH    TEMP
  726.     ZALS    TEMP
  727.     OR      LED
  728.  
  729.     XOR     ONES
  730.     SACL    LED
  731.  
  732.     OUT     LED,PA2
  733.  
  734. * OUTPUT INTERPOLATOR 4 PASS 1
  735.  
  736.     ZAC
  737.     LT      LPFO2+3
  738.     MPYK    -289
  739.     LTD     LPFO2+2
  740.     MPYK    2335
  741.     LTD     LPFO2+1
  742.     MPYK    2335
  743.     LTD     LPFO2
  744.     MPYK    -289
  745.     APAC
  746.     ADD     ONE,11          ADD 0.5 TO ROUND
  747.     SACH    SIGOUT,4        SAVE 1ST OUTPUT SIGNAL
  748.     ZALS    SIGOUT
  749.     XOR     MASK            2'S COMP=>OFFSET BINARY
  750.     SACL    SIGOUT          SAVE 1ST OUTPUT SIGNAL
  751.  
  752. * SECOND OUTPUT SIGNAL
  753.  
  754.     ZALS    LPFO2+2
  755.     XOR     MASK            2'S COMP=>OFFSET BINARY
  756.     SACL    SIGOUT+1        SAVE 2ND OUTPUT SIGNAL
  757.  
  758. * OUTPUT INTERPOLATOR 3
  759.  
  760.     ZAC
  761.     LT      LPFO1+5
  762.     MPYK    111
  763.     LTD     LPFO1+4
  764.     MPYK    -530
  765.     LTD     LPFO1+3
  766.     MPYK    2474
  767.     LTD     LPFO1+2
  768.     MPYK    2474
  769.     LTD     LPFO1+1
  770.     MPYK    -530
  771.     LTD     LPFO1
  772.     MPYK    111
  773.     APAC
  774.     ADD     ONE,11          ADD 0.5 TO ROUND
  775.     SACH    LPFO2,4         SAVE TO INTERP 4 W/SHIFT
  776.  
  777. * PUT BANDPASS FILTER OUTPUT INTO THIRD INTERPOLATOR IF BIOZ IS LOW
  778. * OTHERWISE USE BPF INPUT (DELAYED HALFWAY)
  779.  
  780.     BIOZ    GETBPF
  781.     ZALH    BPFOUT
  782.     B       PUTOUT
  783. GETBPF  ZALH    BPF+40
  784.     NOP
  785.     NOP
  786. PUTOUT  SACH    LPFO1
  787.  
  788. * OUTPUT INTERPOLATOR 4 PASS 2
  789.  
  790.     ZAC
  791.     LT      LPFO2+3
  792.     MPYK    -289
  793.     LTD     LPFO2+2
  794.     MPYK    2335
  795.     LTD     LPFO2+1
  796.     MPYK    2335
  797.     LTD     LPFO2
  798.     MPYK    -289
  799.     APAC
  800.     ADD     ONE,11          ADD 0.5 TO ROUND
  801.     SACH    SIGOUT+2,4      SAVE 3RD OUTPUT SIGNAL
  802.     ZALS    SIGOUT+2
  803.     XOR     MASK            2'S COMP=>OFFSET BINARY
  804.     SACL    SIGOUT+2        SAVE 1ST OUTPUT SIGNAL
  805.  
  806. * FOURTH OUTPUT SIGNAL
  807.  
  808.     ZALS    LPFO2+2
  809.     XOR     MASK            2'S COMP=>OFFSET BINARY
  810.     SACL    SIGOUT+3        SAVE 4TH OUTPUT SIGNAL
  811.  
  812. * LOAD OUTPUT INTERPOLATOR
  813.  
  814.     ZALH    LPFO1+3
  815.     SACH    LPFO2
  816.  
  817.     B AGAIN
  818.  
  819. * TIME WASTING ROUTINE
  820. * NUMBER OF CYCLES WASTED (INCLUDING "CALL WASTE")
  821. * IS: 2 (CALL) + 3 (LARK+2 NOP)
  822. * + 3*N (LOOP) + 2 (RET) = 7 + 3*(N+1)
  823.  
  824. * WASTE 394
  825.  
  826. WASTE   LARK    AR0,128
  827.     NOP
  828.     NOP
  829. WASTEB  LARP    AR0
  830.     BANZ    WASTEB
  831.     RET
  832.  
  833. * WASTE 394-20=374
  834.  
  835. * 5 + 3*(N+1)
  836.  
  837. WASTE2  LARK    AR0,122
  838. WASTE2B LARP    AR0
  839.     BANZ    WASTE2B
  840.     RET
  841.  
  842. TABLE   DATA    ?1111111100000000   A/D 8 BIT MASK
  843.     DATA    ?1000000000000000   2'S COMPLEMENT MASK
  844. TBLEND  DATA    ?1111111111111111   ONES
  845.  
  846. * ELLIPTIC IIR HPF DATA:
  847. * N=2 PASS 300 HZ REJ 20 HZ 0.5 DB/50 DB
  848. * FS = 3125 HZ
  849. * HPF COEFFICIENTS:
  850.  
  851. TABLE1  DATA    2853,-5704,2853,5658
  852. TBLEND1 DATA    -2333
  853.  
  854. * Copyright notice
  855. * ONLY ROOM FOR 9 BYTES!
  856. * ASCII DATA STRING EMBEDDED IN THE FOLLOWING DATA STATEMENTS:
  857. * (c)92W9GR
  858.     DATA    >2828,>6363,>2929,>3939,>3232,>5757,>3939,>4747
  859.     DATA    >5252
  860.  
  861.     DEND
  862.     END
  863.